用Rust重构核心开源软件吧,谷歌愿意给你钱
2 月 17 日,谷歌博客发布了一则公告,表示将提供资金让开发者一起重构各类核心开源软件。
开源项目是所有现代数字基础设施的根基,其重要性不言而喻。谷歌认为内存安全漏洞是困扰无数系统的实际威胁。最近一项研究发现,每年通过安全更新解决的漏洞中,约 70% 属于内存安全问题。另外一项针对 curl 命令行工具安全问题做出的分析则表明,使用内存安全语言能够彻底解决全部 95 种 bug 中的 53 种。以 curl 改造项目作为模板,谷歌希望能重构更多的由其他语言编写的核心开源软件。
事实上,由不安全语言编写的软件中往往包含难以察觉的 bug,极有可能导致严重的后续安全隐患。为此,谷歌公司扩大了与互联网安全研究小组(ISRG)的合作关系,希望共同使用内存安全语言重构各类核心开源软件。
去年 12 月份,谷歌启动了一个名叫“Criticality Score”的项目,目的是为每个开源项目生成一个关键评分,来评估现有开源项目的重要性。评估指标包括项目的年龄、个人贡献者和组织的数量、用户的参与度以及项目依赖性等。谷歌表示鉴定这些关键项目是改进开源项目安全性计划的第一步,谷歌的 OpenSSF 组织将会为这些项目维护者提供一些资源。
今年这次重构计划,谷歌更为直接地表示将提供给大家资金,以推进其他核心开源项目的改造。但是到底是由谁来改造,是否一定是原始维护者,谷歌并没有明确说明。有网友提出疑问,如果由原开源项目之外的人员进行重构,那么资金是否就是提供给这些新开发人员(看起来是新的就业机会呢)。
对此,ISRG 的执行董事解释说:“我们计划将开源软件迁移到内存安全语言上,ISRG 作为中间人协调资金。我们选择项目,并与开源维护人员 / 开发人员一起制定计划,我们会为其筹集资金。一旦有人(例如 Google)为项目提供资金,ISRG 就与项目开发人员 / 维护人员签订工作合同。在某些情况下,可能开源维护者会参与,但我们希望能找到承包商来完成实际的工作。”
并且他再次提到了两个以前的改进项目。其中,curl 的改进,ISRG 直接资助了 curl 的作者;httpd 的改进,谷歌(通过 ISRG)资助了 httpd 提交者。ISRG 执行董事预测,未来大多数情况下,这些资金将主要流向项目维护者 / 开发人员。
不过,谷歌花钱推动重写开源软件的行为,也被一些网友质疑为“以安全名义劫持开源项目”。最初的开源项目维护者是跟谷歌和 ISRG 无关的第三方,而改造项目却是由谷歌选择自己信任的开发人员进行。并且最后用户还得从谷歌改造版本和原始版本中进行选择,如果改造项目更成功,那么在道德上相当于窃取了原始作者的作品。
谷歌认为当前正是使用内存安全编程语言预防此类 bug 的好时机。在此之前,他们也取得了一些成果:
迄今为止,我们的免费 OSS-Fuzz 服务已经在 375 个开源项目中发现 5500 个因内存安全错误引发的漏洞。我们还组织起相应的 Bug 赏金计划,希望通过经济奖励的方式鼓励更多人使用这项模糊测试服务。我们也发布了 Syzkaller 等项目以检测操作系统内核中的 bug,并通过 gVisor 等沙箱缓解 bug 检测期间造成的实际影响。
作为相关工作的重要起点,面向 curl 的 HTTP 与 TLS 后端正在接受 Rust 语言改造,Apache httpd 也即将迎来全新 TLS 库。作为互联网的重要网关,这些代码库的安全水平将直接决定全球数百万用户的数据安全性。
目前,Rust 被普遍认为是一种关注内存安全的系统编程语言,同时结合了对性能的低程度控制与现代语言特征。因此,谷歌一直希望能够扩展 Rust 在谷歌中的应用,并且已经开始在那些对内存安全和性能要求极高的设置中使用了 Rust,包括将其用在关键的 Android 系统中。
目前,谷歌正在使用 Rust 或对 Rust 生态系统有贡献的项目包括:
Android 中的操作系统模块,包括蓝牙和 Keystore 2.0
低级别的项目,例如 ChromeOS 中使用的 crosvm 虚拟机监视器和驱动程序(QEMU 的替代方案)
为使用 Rust 的开源项目做出的贡献,例如 Mercurial 源代码控制系统
固件的 FIDO 安全密钥支持
此外,还有许多其他项目正在评估 Rust 在新的库或产品中的使用情况。一些例子包括:软件国际化项目,ICU4X部分新实验操作系统 FuchsiaGPU 字体渲染的研究
其中也包括谷歌所支持的 Rust 项目及其维护者:
在 curl 中添加 Rust 代码
与 ISRG 合作,将 Rust TLS 模块添加到 Apache HTTP 服务器项目
在 Rust 的推广上,谷歌不遗余力,还在今年 2 月 8 日,联合 AWS、华为、微软和 Mozilla 五家企业,宣布成立 Rust 基金会,并承诺在两年的时间里,投入 100 万美元的预算,用于 Rust 项目的开发、维护和推广,致力于为那些管理和开发该项目的维护者提供支持。
谷歌表示,“基于谷歌在 C/C++、编译器和工具链方面的长期投资,我们很高兴成为 Rust 基金会的成员。我们期待更多地参与到 Rust 社区,尤其是在整个行业的关键问题上做出更多努力,包括与 C++ 的互操作性、协调安全审查和降低 crate 更新的成本,并继续增加我们对现有 Rust 项目的投资”。
无论如何,谷歌提供资金,让开发人员用内存安全语言重写开源软件,以提升目前互联网的整体安全度,看起来也不是一件坏事。
今日荐文
点击下方图片即可阅读
点个在看少个 bug 👇